using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FiltronASP.Models.Validators;

namespace FiltronASP.Models
{
    /// <summary>
    /// Fragment klasy odpowiadajacy tabeli <code>Users</code>.
    /// </summary>
    [MetadataType(typeof(UserValidation))]
    public partial class User
    {
    }

    /// <summary>
    /// Klasa z walidacja dla niektorych danych klasy <code>User</code>.
    /// </summary>
    public class UserValidation
    {

        [HiddenInput(DisplayValue = false)]
        public int user_id { get; set; }

        [Required(ErrorMessage = "Login użytkownika jest wymagany.")]
        [StringLength(50, ErrorMessage = "Login użytkownika nie powinien być dłuższy niż 50 znaków.")]
        [Login(ErrorMessage = "Login użytkownika może zawierać tylko liczby, litery a-ź, A-Ź, myślniki oraz podkreślniki.")]
        public string user_login { get; set; }

        [Required(ErrorMessage = "Imię użytkownika jest wymagane.")]
        [StringLength(50, ErrorMessage = "Imię użytkownika nie powinno być dłuższe niż 50 znaków.")]
        [AlpaNumeric(ErrorMessage = "Imię użytkownika nie powinno zawierać znaków specjalnych.")]
        public string user_first_name { get; set; }

        [Required(ErrorMessage = "Nazwisko użytkownika jest wymagane.")]
        [StringLength(50, ErrorMessage = "Nazwisko użytkownika nie powinno być dłuższe niż 50 znaków.")]
        [AlpaNumeric(ErrorMessage = "Nazwisko użytkownika nie powinno zawierać znaków specjalnych.")]
        public string user_last_name { get; set; }

        [Required(ErrorMessage = "Adres email użytkownika jest wymagany.")]
        [StringLength(50, ErrorMessage = "Adres email użytkownika nie powinien być dłuższy niż 80 znaków.")]
        [Email(ErrorMessage = "Wprowadzony adres email nie wygląda na poprawny.")]
        public string user_mail_address { get; set; }

        [Required(ErrorMessage = "Status użytkownika jest wymagany.")]
        public Nullable<bool> user_active { get; set; }

    }
}
